package com.itcam.imitate;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author : Cammy.Wu
 * Description : 激活隐藏技能（方法调用）
 */

public class Story03 {

    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        // 获取 Robot 类的 Class 对象
        Class<?> robotClass = Class.forName("com.itcam.imitate.Robot");

        // 创建 Robot 类的实例
        Object robot = robotClass.getDeclaredConstructor().newInstance();

        Method[] declaredMethods = robotClass.getDeclaredMethods();
        for (Method declaredMethod : declaredMethods) {
            // 假设要找的方法参数是一个
            if (declaredMethod.getParameterCount() == 1) {
                // 假设知道秘密武器是Rocket想要知道如何启动它
                // 获取秘密技能
                if (declaredMethod.getName().contains("Rocket")) {
                    declaredMethod.setAccessible(true);
                    // 执行技能！传入参数"小明"
                    declaredMethod.invoke(robot, "小明");
                    // 输出：火箭发射目标锁定：小明！

                }
            }
        }

    }
}
